1 /** 2 * Copyright 2008 WebPhotos 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package net.sf.webphotos.action; 17 18 import java.awt.event.ItemEvent; 19 import java.awt.event.ItemListener; 20 import javax.swing.JTable; 21 import net.sf.webphotos.Album; 22 import net.sf.webphotos.PhotoDTO; 23 import net.sf.webphotos.gui.PainelWebFotos; 24 import net.sf.webphotos.gui.util.TableModelFoto; 25 26 /** 27 * Informa se o item foi ou não selecionado. Possui dois construtores, um geral 28 * que seta um valor para a tabela de fotos e o segundo que não recebe 29 * parâmetros, serve apenas para mudar o flag de alteração detectada. Possui um 30 * método que identifica o elemento selecionado e faz as alterações necessárias. 31 */ 32 public class AcaoItemListener implements ItemListener { 33 34 private JTable tbFotos = null; 35 36 /** 37 * Construtor da classe. Recebe uma tabela como parâmetro e seta esse valor 38 * para a variável tabela de fotos da classe. 39 * 40 * @param tabela Tabela de fotos. 41 */ 42 public AcaoItemListener(JTable tabela) { 43 tbFotos = tabela; 44 } 45 46 /** 47 * Construtor da classe. Inicialmente vazio. Utilizado pelo combo 48 * lstCategoriasAlbum em 49 * {@link net.sf.webphotos.gui.PainelWebFotos PainelWebFotos}, muda somente 50 * o flag 51 * {@link net.sf.webphotos.gui.PainelWebFotos#alteracaoDetectada() alteracaoDetectada}. 52 */ 53 public AcaoItemListener() { 54 } 55 56 /** 57 * Checa quando for evento de lstCategoriasAlbum, significa que o album esta 58 * vazio, muda somente a flag de alteração detectada. Caso contrário busca 59 * qual item, no caso foto, foi selecionado pelo usuário, seta creditoNome 60 * com o item afetado pelo evento, atualiza o modelo do albúm e muda o flag 61 * de alteração detectada. 62 * 63 * @param e Evento de item (selecionado ou não selecionado). 64 */ 65 @Override 66 public void itemStateChanged(ItemEvent e) { 67 PhotoDTO f; 68 // quando for evento de lstCategoriasAlbum, somente muda a flag 69 if (tbFotos == null) { 70 PainelWebFotos.alteracaoDetectada(); 71 //return; 72 } else if (e.getStateChange() == ItemEvent.SELECTED) { 73 if (e.getItem().toString().length() > 0) { 74 Object fotoID = tbFotos.getModel().getValueAt(tbFotos.getSelectedRow(), 0); 75 try { 76 f = (PhotoDTO) Album.getAlbum().getFoto(Integer.parseInt(fotoID.toString())); 77 } catch (Exception ex) { 78 f = (PhotoDTO) Album.getAlbum().getFoto((String) fotoID); 79 } 80 f.setCreditoNome((String) e.getItem().toString()); 81 TableModelFoto.getModel().update(); 82 TableModelFoto.getModel().fireTableCellUpdated(tbFotos.getSelectedRow(), 2); 83 PainelWebFotos.alteracaoDetectada(); 84 } 85 } 86 } 87 }